package com.unmarshaller;

import org.apache.log4j.Logger;

import com.unmarshaller.model.ConfigData;
import com.unmarshaller.propertiesunmarshaller.PropertyProcess;
import com.unmarshaller.xmlunmarshaller.XmlDataProcess;

/**
 * 解析驱动器
 * @author hongxiao.z
 * @create 2013-12-12
 * 
 * 说明：
 * 所有需要解析的数据中心需要声明注解@FilePath("文件路径")
 * 每个系统都有一个数据中心类，里面的一些数据模块属性需要声明为静态。
 */
public class UnmarshallerDerve
{
	public final static Logger log = Logger.getLogger(UnmarshallerDerve.class);
	
	public static ConfigData CONFIG_DATA;
	
	public static void exec()
	{
		/*解析主配置, 设置CONFIG_DATA属性*/
		XmlDataProcess.process(UnmarshallerDerve.class);
		
		if(CONFIG_DATA == null)
		{
			log.warn(new StringBuilder("configuration.xml文件缺失或者存在错误,导致最终无法解析成功！").toString());
			return;
		}
		
		if(CONFIG_DATA.getXmlLoads() != null)
		{
			/*XML解析*/
			for (Class<?> clazz : CONFIG_DATA.getXmlLoads()) 
			{
				XmlDataProcess.process(clazz);
			}
		}
		
		if(CONFIG_DATA.getPropertiesLoads() != null)
		{
			/*properties解析*/
			PropertyProcess.process(CONFIG_DATA.getPropertiesLoads());
		}
		
	}
}
